/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.uniceub.fsw.agenda.util;

import java.util.HashSet;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

/**
 * Wrapper do HttpServletRequest usado para modificar valores quando necessario.
 * Essa classe será util para "resetar" valores de parametros, como por exemplo
 * quando for preciso limpar um formulario.
 * 
 * 06/04/2008
 * @author Rodrigo Uchôa - rodrigo.uchoa@yahoo.com
 *
 */
public class MutableHttpServletRequestWrapper extends HttpServletRequestWrapper {
    private Set<String> parameters;
    
    public MutableHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        parameters = new HashSet<String>();
    }
    
    public void setParametersToReset(String... parameters) {
        for (String s : parameters) {
            this.parameters.add(s);
        }
    }
    
    /**
     * Esse metodo modifica o valor dos parametros do request.
     * Ele somente retona o valor verdadeiro dos parametros que nao foram
     * setados no setParametersToReset. Se o parametro tiver sido "marcado"
     * para reset, entao o valor retornado será "". (String vazia)
     * @param paramName
     * @return
     */
    @Override
    public String getParameter(String paramName) {
        String value = super.getParameter(paramName);
        
        if (parameters.contains(paramName)) {
            return "";
        } else {
            return value;
        }
    }
   
}
